import BasicController from './../BasicController'
import {UserModel} from './../../model'
import ErrorHandlerCode from './../../util/ErrorHandlerCode'
import md5 from 'js-md5';

class UserController extends BasicController{

    /*
     * 创建时间：17-9-24
     * 作者：sce
     * 功能描述： 用户登录调用
     * 修改时间：
     */

    login(req, res){
        if(!super.isEmptyParameter(req.body.user_no)){
            res.json({
                code:ErrorHandlerCode.MISSINGPARAMETER,
                message: 'user_no 为必选参数'
            })
            return;
        }
        if(!super.isEmptyParameter(req.body.user_password)){
            res.json({
                code:ErrorHandlerCode.MISSINGPARAMETER,
                message: 'user_password 为必选参数'
            })
            return;
        }
        UserModel.findByUserNo(req.body.user_no).then((data) => {
            if(data){
                if(data.user_password !== req.body.user_password){
                    res.json(ErrorHandlerCode.USERLOGINPASSWORDERROR);
                }else{
                    req.session.user = data;
                    const resData = {
                        id:data.id,
                        user_name:data.user_name,
                        user_no: data.user_no,
                        college: data.college,
                        class: data.class,
                        tel: data.tel,
                        qq: data.qq
                    }
                    super.RequestSuccessMsg(res, resData);
                }
            }else{
                res.json(ErrorHandlerCode.USERLOGINUSERNOERROR);
            }
        }).catch((err) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
            throw err;
        })
    }

    /*
     * 创建时间：17-9-24
     * 作者：sce
     * 功能描述： 用户获取自己的信息
     * 修改时间：
     */

    getUserInfo(req,res){
        if(!super.isUserLogin(req)) {
            res.json(ErrorHandlerCode.USERLOGINTIMEOUT);
            return;
        }
        const id = super.getUserId(req);
        UserModel.findUserById(id).then((data) => {
            const resData = {
                id:data.id,
                user_name:data.user_name,
                user_no: data.user_no,
                college: data.college,
                class: data.class,
                tel: data.tel,
                qq: data.qq
            }
            super.RequestSuccessMsg(res, resData);
        }).catch((error) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
        })
    }

    /*
     * 创建时间：17-9-24
     * 作者：sce
     * 功能描述： 注册
     * 修改时间：
     */

    async regist(req, res){
        if(!super.isEmptyParameter(req.body.user_no)){
            res.json({
                code:ErrorHandlerCode.MISSINGPARAMETER,
                message: 'user_no 为必选参数'
            })
            return;
        }
        req.body.user_password = md5(req.body.user_no);
        if(!super.isEmptyParameter(req.body.user_password)){
            res.json({
                code:ErrorHandlerCode.MISSINGPARAMETER,
                message: 'user_password 为必选参数'
            })
            return;
        }
/*        const user = UserModel.findByUserNo(req.body.user_no);
        if(user.id){
            res.json(ErrorHandlerCode.USERREGISTNOEXIT);
            return;
        }*/
        UserModel.regist(req.body).then((data) => {
            super.RequestSuccessMsg(res);
        }).catch((error) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
            throw error;
        })
    }

    /*
     * 创建时间：17-9-24
     * 作者：sce
     * 功能描述： 修改密码
     * 修改时间：
     */

    updatePassword(req, res){
        if(!super.isUserLogin(req)) {
            res.json(ErrorHandlerCode.USERLOGINTIMEOUT);
            return;
        }
        if(!super.isEmptyParameter(req.body.user_password)){
            res.json({
                code:ErrorHandlerCode.MISSINGPARAMETER,
                message: 'user_password 为必选参数'
            })
            return;
        }
        const userInfo = {
            id: super.getUserId(),
            user_password:req.body.user_password
        }
        UserModel.updatePassword(userInfo).then((data) => {
            super.RequestSuccessMsg(res);
        }).catch((error) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
            throw error;
        })
    }

    /*
     * 创建时间：17-9-24
     * 作者：sce
     * 功能描述： 修改/完善个人信息
     * 修改时间：
     */

    updateUserInfo(req, res){
        if(!super.isUserLogin(req)) {
            res.json(ErrorHandlerCode.USERLOGINTIMEOUT);
            return;
        }
        let userInfo = req.body;
        userInfo.id = super.getUserId();
        UserModel.updateUserInfo(userInfo).then((data) => {
            super.RequestSuccessMsg(res);
        }).catch((error) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
            throw error;
        })
    }

    /*
     * 创建时间：17-9-24
     * 作者：sce
     * 功能描述： 管理员获取用户用户信息
     * 修改时间：
     */
    getUserListWithAdmin(req, res){
/*        if(!super.isUserLogin(req)) {
            res.json(ErrorHandlerCode.USERLOGINTIMEOUT);
            return;
        }
        if(!super.isUserAdmin(req)){
            res.json(ErrorHandlerCode.ADMINLOGINTIMEOUT);
            return;
        }*/
        req.body.page_size = req.body.page_size || 10;
        req.body.page_no = req.body.page_no || 1;
        UserModel.findAllWithAdminByPage(req.body).then((data) => {
            super.RequestSuccessMsg(res, data);
        }).catch((error) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
            throw error;
        })
    }

    /*
     * 创建时间：17-9-24
     * 作者：sce
     * 功能描述： 管理员获取用户详细信息
     * 修改时间：
     */

    getUserWithAdminById(req, res){
        if(!super.isUserLogin(req)) {
            res.json(ErrorHandlerCode.USERLOGINTIMEOUT);
            return;
        }
        if(!super.isUserAdmin(req)){
            res.json(ErrorHandlerCode.ADMINLOGINTIMEOUT);
            return;
        }
        if(!super.isEmptyParameter(req.body.id)){
            res.json({
                code:ErrorHandlerCode.MISSINGPARAMETER,
                message: 'id 为必选参数'
            })
            return;
        }
        UserModel.findUserById(req.body.id).then((data) => {
            super.RequestSuccessMsg(res, data);
        }).catch((error) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
            throw error;
        })
    }
    delUserById(req,res){
        if(!super.isEmptyParameter(req.body.id)){
            res.json({
                code:ErrorHandlerCode.MISSINGPARAMETER,
                message: 'id 为必选参数'
            })
            return;
        }
        UserModel.delUser(req.body.id).then((data) => {
            super.RequestSuccessMsg(res, data);
        }).catch((error) => {
            res.json(ErrorHandlerCode.INNERSERVICERROR);
            throw error;
        })
    }

}

module.exports = new UserController();